不同的组件会根据旋转表冠的操作呈现不同的效果,组件响应旋转表冠事件被抽象为滑动事件的处理。
组件名称 |
说明 |
---|---|
ListContainer |
用来呈现连续、多行数据的组件,包含一系列相同类型的列表项。 |
ScrollView |
一种带滚动功能的组件,它采用滑动的方式在有限的区域内显示更多的内容。 |
Picker(TimePicker/DatePicker) |
滑动选择器,允许用户从预定义范围中进行选择。当前支持时间选择器、日期选择器。 |
PageSlider |
用于页面之间切换的组件,它通过响应旋转表冠事件完成页面间的切换。 |
组件支持随旋转表冠操作时触发震动效果。旋转表冠预设结束处理机制,用户不再旋转表冠后100ms进入尾处理流程,尾处理流程主要用于完成惯性回弹,限位吸附等效果。
接口说明
名称 |
描述 |
---|---|
setBindStateChangedListener |
设置组件绑定状态的侦听器。 |
setTouchFocusable |
设置组件在触摸模式下是否可以接收对焦。 |
requestFocus |
请求当前组件或其子组件之一的焦点。 |
setRotationEventListener |
为组件中的旋转事件注册侦听器。 |
setRotationSensitivity |
设置表冠的旋转灵敏度。 |
setVibrationEffectEnabled |
设置是否启用振动效果。 |
UI组件自动支持旋转表冠操作
实现UI组件随表冠的旋转而滑动,需要UI组件当前是获焦状态。对于支持旋转表冠的组件,要实现进入页面中某个UI组件自动支持旋转表冠操作,需要在其绑定到Window触发的回调中将控件设为可获焦并且申请焦点。
以Picker组件为例,示例代码如下:
Picker numberPicker = new Picker(getContext());
numberPicker.setBindStateChangedListener(new BindStateChangedListener() {
public void onComponentBoundToWindow(Component component) {
component.setTouchFocusable(true);
component.requestFocus();
}
public void onComponentUnboundFromWindow(Component component) {
}
});
自定义UI组件对旋转表冠的响应
开发者可以根据实际情况对组件响应旋转表冠事件进行自定义处理。在回调中通过返回的boolean值控制组件是否消费旋转事件,如果返回true,则表示消费旋转事件;返回false,框架内不再对该组件响应旋转事件做处理。
示例:
numberPicker.setRotationEventListener(new RotationEventListener() {
public boolean onRotationEvent(Component component, RotationEvent rotationEvent) {
return false;
}
});
灵敏度设置
当前系统有默认的灵敏度,开发者无需对组件进行旋转灵敏度的调整即可满足正常功能。
同时框架也为每个控件提供了高,低以及默认的灵敏度,示例:
numberPicker.setRotationSensitivity(Picker.ROTATION_SENSITIVITY_HIGH);
振动效果设置
UI组件支持随旋转表冠事件触发振动效果,支持范围及效果如下(其中端点振动效果振感强于非端点振动效果振感,振动强度依次为: haptic.crown.strength3> haptic.crown.strength2 > haptic.crown.strength1):
ScrollView能够每随表冠旋转移动的一定距离时触发震动效果,移动到触顶或触底时为haptic.crown.strength3,其他以单位移动举例触发haptic.crown.strength1。
ListContainer配置限位吸附模式(centralMode)时能够每随表冠旋转移动一个列表item项时触发震动效果,移动到非端点表项时为haptic.crown.strength1,移动到端点(item的首项和尾项)表项时为haptic.crown.strength3。配置为非吸附模式,效果同ScrollView。
Picker能够每随表冠旋转调整一个单位时触发震动效果,移动到非端点表项时为haptic.crown.strength2,移动到端点(最小值和最大值)时为haptic.crown.strength3。
PageSlider能够每随表冠旋转触发翻页时触发震动效果,移动到非端点页面时为haptic.crown.strength1,移动到端点页面(第一页和最后一页)时为haptic.crown.strength3。
组件默认开启旋转表冠的震动效果,同时支持组件级别的旋转表冠震动开关控制,示例:
numberPicker.setVibrationEffectEnabled(true);